package exercise;

import java.util.Arrays;
import java.util.Random;

public class Test {

    //顺序
    public static void inOrder(int[] array) {
        for(int i=0;i<array.length;i++) {
            array[i]=i;
        }
    }

    //逆序
    public static void notOrder(int[] array) {
        for(int i=0;i<array.length;i++) {
            array[i]=array.length-i;
        }
    }

    //随机顺序
    public static void randomOrder(int[] array) {
        Random rand=new Random();
        for(int i=0;i<array.length;i++) {
            array[i]=rand.nextInt(10_0000);//输出范围是[0,99999]的整数
        }
    }

    public static void testInsertSort(int[] array) {
        //每次要排序的数组是准备好的数组的备份,这样既保证了数据源的一致,也不会相互影响
        array= Arrays.copyOf(array, array.length);
        long startTime=System.currentTimeMillis();//获取系统的毫秒时间戳
        TestSort.insertSort(array);
        long endTime=System.currentTimeMillis();
        System.out.println("插入排序耗时:"+(endTime-startTime)+"ms");
    }
    public static void testShellSort(int[] arr) {
        /*
        每次排序的对象是准备好的数组的备份.这样既保证了同一数据源,也不会相互影响
         */
        arr= Arrays.copyOf(arr, arr.length);
        long startTime=System.currentTimeMillis();//获取系统的毫秒时间戳
        TestSort.shellSort(arr);
        long endTime=System.currentTimeMillis();
        System.out.println("希尔排序耗时:"+(endTime-startTime)+"ms");
    }

    public static void main2(String[] args) {
        int[] array=new int[10_0000];
        notOrder(array);
        testInsertSort(array);
        testShellSort(array);
    }

    public static void main(String[] args) {
        int[] array={89,23,14,5,20,34};
//        int[] array={1,2,3,4,5};
//        TestSort.insertSort(array);
//        TestSort.shellSort(array);
//        TestSort.selectSort(array);
//        TestSort.selectSort2(array);
//        TestSort.heapSort(array);
//        TestSort.bubbleSort(array);
//        TestSort.quickSort(array);
//        TestSort.quickSortNot(array);
//        TestSort.mergeSort(array);
        TestSort.mergeSortNot(array);
        for(int i:array) {
            System.out.print(i+" ");
        }
    }
}
